package org.zenheart.fxnative.view.controller;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.input.Dragboard;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.AnchorPane;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import java.io.File;
import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;

/**
 * <p>项目名称: cgenerator </p>
 * <p>描述: 小信息列表 </p>
 * <p>创建时间: 2021/9/24 </p>
 *
 * @author CKM
 * @version v1.0
 */
@Slf4j
@Component
public class TableListController implements Initializable {

    @FXML
    public AnchorPane tableContainer;

    @Override
    public void initialize(URL locate, ResourceBundle resources) {
        Label label = new Label("将zip压缩文件拖到此区域");
        label.getStyleClass().addAll("accent", "label-drag-drop");

        // 设置标签为可接收拖放事件
        label.setOnDragOver((event) -> {
            if (event.getGestureSource() != label && event.getDragboard().hasFiles()) {
                event.acceptTransferModes(TransferMode.COPY);
            }
            event.consume();
        });

        // 当文件被拖入时触发该事件
        label.setOnDragDropped((event) -> {
            Dragboard dragboard = event.getDragboard();
            // 获取拖入的文件列表
            List<File> files = dragboard.getFiles();

            for (File file : files) {
                if (file.isDirectory()) {
                    continue;
                }
                String extension = StringUtils.getFilenameExtension(file.getName());
                if (!"gif".equals(extension)) {
                    continue;
                }
                log.info("已拖入文件：{}", file.getName());

                // 这里可以对拖入的文件进行相关操作
            }

            if (event.isDropCompleted()) {
                event.consume();
            }
        });
        AnchorPane.setTopAnchor(label, 100.0);
        AnchorPane.setBottomAnchor(label, 100.0);
        AnchorPane.setLeftAnchor(label, 150.0);
        AnchorPane.setRightAnchor(label, 150.0);
        tableContainer.getChildren().add(label);
    }

    @FXML
    private void searchTableEvent(ActionEvent event) {
    }

}
